home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 51 / Amiga Format CD51 (2000-03-10)(Future Publishing)(GB)[!][issue 2000-04].iso / -in_the_mag- / banging_the_metal / qdos / qdos4amiga2 / romsrc / sys / procs9_asm < prev    next >
Text File  |  2000-01-03  |  8KB  |  441 lines

  1. */beginfile PROCS9_asm
  2. ; --------------------------------------------------------------
  3. ; PROCS9_asm - BASIC bits
  4. ;        - last modified 27/08/95
  5. ; QDOS-Amiga sources by Rainer Kowallik
  6. ;    ...some changes by Mark J Swift
  7. ; --------------------------------------------------------------
  8. ; get parameter
  9. ; entry of variables name
  10. L069AE:
  11.     CMPA.L    A5,A3
  12.     BGE.S    L06994
  13.     MOVE.L    A5,-(A7)
  14.     ADDQ.W    #8,A3
  15.     MOVEA.L    A3,A5
  16.     JSR    L064A2(PC)    ;*/undomodify BSR L064A2
  17.     MOVEA.L    (A7)+,A5
  18.     BEQ.S    L0698E
  19.     ADDQ.W    #4,A7
  20.     RTS
  21. L069C4    ; open channel for BASIC
  22.     BSR.S    L069AE
  23.     MOVEQ    #IO.OPEN,D0
  24.     MOVEQ    #-1,D1        ; Job ID
  25.     MOVE.L    D4,D3
  26. L069CC    MOVEA.L    A1,A0
  27.     MOVE.W    0(A6,A1.L),-(A7)
  28.     TRAP    #4
  29.     TRAP    #2
  30.     MOVEQ    #3,D3
  31.     ADD.W    (A7)+,D3
  32.     BCLR    #0,D3
  33.     ADD.L    D3,BV_RIP(A6)    ;arithmetic stack
  34.     TST.L    D0
  35.     RTS
  36. BAS_DELEte:
  37.     BSR.S    L069AE
  38.     MOVEQ    #$04,D0
  39.     BRA.S    L069CC
  40. BAS_DIR:
  41.     JSR    CHNRTOID(PC)    ;*/undomodify BSR CHNRTOID
  42.     BNE.S    L0698E
  43.     MOVEA.L    A0,A4
  44.     MOVEQ    #$04,D4
  45.     BSR.S    L069C4
  46.     BNE.S    L0698E
  47.     MOVEA.L    A0,A5
  48.     MOVEQ    #$45,D0
  49.     MOVEA.L    (A6),A1
  50.     MOVEA.L    A5,A0
  51.     BSR.S    TRAP_4_3
  52.     BNE.S    L06986
  53.     MOVE.L    D1,-(A7)
  54.     MOVEA.L    (A6),A1
  55.     MOVEQ    #$0A,D2
  56.     BSR.S    L06A6A
  57.     MOVEQ    #IO.SBYTE,D0    ;send a byte
  58.     MOVEQ    #$0A,D1        ; Send <LF>
  59.     TRAP    #3
  60.     MOVEM.W    (A7)+,D1-D2
  61.     BSR.S    L06A40
  62. L06A1A    MOVEQ    #$03,D0
  63.     MOVEQ    #$40,D2
  64.     MOVEA.L    (A6),A1
  65.     MOVEA.L    A5,A0
  66.     MOVEQ    #0,D4
  67.     BSR    TRAP_4_3
  68.     BNE    L06988
  69.     SUBA.W    #$0030,A1
  70.     MOVE.W    -$02(A6,A1.L),D2
  71.     BEQ.S    L06A1A
  72.     BSR.S    L06A6A
  73.     MOVEQ    #IO.SBYTE,D0    ;send a byte
  74.     MOVEQ    #$A,D1        ; send <LF>
  75.     TRAP    #3
  76.     BRA.S    L06A1A
  77. L06A40    ; add number of sectors
  78.     MOVE.W    D2,D4
  79.     BSR.S    L06A5A
  80.     MOVEQ    #IO.SBYTE,D0    ;send a byte
  81.     MOVE.B    #$2F,D1        ; send '/'
  82.     TRAP    #3
  83.     MOVE.W    D4,D1
  84.     BSR.S    L06A5A
  85.     MOVEQ    #-$17,D0
  86.     JSR    UT_ERR(PC)    ;*/undomodify BSR UT_ERR
  87.     MOVEQ    #0,D0
  88.     RTS
  89. L06A5A    ; add entire number
  90.     MOVEA.L    (A6),A1
  91.     LEA    2(A1),A0
  92.     MOVE.W    D1,0(A6,A1.L)
  93.     JSR    CN_ITOD(PC)    ;*/undomodify BSR CN_ITOD
  94.     MOVE.W    D1,D2
  95. L06A6A    MOVEQ    #7,D0
  96.     MOVEA.L    A4,A0
  97.     MOVEQ    #-1,D3
  98.     BRA    TRAP_4_3
  99. BAS_FORMat:
  100.     JSR    CHNRTOID(PC)    ;*/undomodify BSR CHNRTOID
  101.     BNE    L0698E
  102.     MOVEA.L    A0,A4
  103.     BSR    L069AE
  104.     MOVEQ    #$03,D0
  105.     BSR    L069CC
  106.     BNE    L0698E
  107.     BRA.S    L06A40
  108. COPY:
  109.     MOVEQ    #0,D5
  110.     BRA.S    L06A94
  111. COPY_N:
  112.     MOVEQ    #-$01,D5
  113. L06A94    MOVEQ    #$01,D4
  114.     BSR    L069C4
  115.     BNE    L0698E
  116.     MOVEA.L    A0,A4
  117.     MOVEQ    #2,D4
  118.     BSR    L069C4
  119.     BNE.S    L06B20
  120.     TST.B    D5
  121.     BNE.S    L06ACA
  122.     MOVEQ    #-1,D5
  123.     MOVEA.L    (A6),A1
  124.     MOVEQ    #$47,D0
  125.     MOVEQ    #$0E,D2
  126.     EXG    A0,A4
  127.     BSR    TRAP_4_3
  128.     EXG    A0,A4
  129.     BNE.S    L06ACA
  130.     MOVEA.L    (A6),A1
  131.     MOVE.L    0(A6,A1.L),D5
  132.     MOVEQ    #$46,D0
  133.     BSR    TRAP_4_3
  134. L06ACA    MOVEA.L    (A6),A1
  135.     MOVE.L    BV_TKBAS(A6),D2    ;token list
  136.     SUB.L    A1,D2
  137.     MOVEQ    #0,D3
  138.     EXG    A0,A4
  139.     TST.L    D5
  140.     BLE.S    L06AE0
  141.     CMP.L    D5,D2
  142.     BLE.S    L06AE0
  143.     MOVE.L    D5,D2
  144. ; --------------------------------------------------------------
  145. */beginoverlay
  146.     ifd    NoTas
  147. L06AE0:
  148.     BSET    #7,BV_BRK(A6)    ;*/mend TAS $8F(A6)
  149.                 ; There has been a
  150.                 ; break (0) or not ($80)
  151.     BEQ.S    L06B1E
  152.     MOVEQ    #IO.FSTRG,D0    ;Fetch string of bytes
  153.     TRAP    #4
  154.     TRAP    #3
  155.     ADDQ.L    #1,D0        ;*/insert
  156.     SUBQ.L    #1,D0        ;*/modify CMPI.L #-1,D0
  157.     BCC.S    L06AFA        ;*/modify BNE.S L06AFA
  158.                 ; not complete error?
  159.     TST.W    D1
  160.     BEQ.S    L06AE0
  161.     BRA.S    L06B0C
  162.     endc
  163.     ifnd    NoTas
  164. L06AE0:
  165.     TAS    $8F(A6)
  166.     BEQ.S    L06B1E
  167.     MOVEQ    #IO.FSTRG,D0
  168.     TRAP    #4
  169.     TRAP    #3
  170.     CMPI.L    #-1,D0
  171.     BNE.S    L06AFA
  172.     TST.W    D1
  173.     BEQ.S    L06AE0
  174.     BRA.S    L06B0C
  175.     endc
  176. */endoverlay
  177. ; --------------------------------------------------------------
  178. L06AFA:
  179.     CMPI.L    #-10,D0        ; end of file error
  180.     BNE.S    L06B08
  181.     MOVEQ    #0,D0
  182.     TST.W    D1
  183.     BEQ.S    L06B1E
  184. L06B08    TST.L    D0
  185.     BNE.S    L06B1E
  186. L06B0C    MOVEQ    #7,D0
  187.     MOVE.W    D1,D2
  188.     EXG    A0,A4
  189.     SUBA.W    D1,A1
  190.     BSR    TRAP_4_3
  191.     BNE.S    L06B1E
  192.     SUB.L    D2,D5
  193.     BNE.S    L06ACA
  194. L06B1E    BSR.S    L06B22
  195. L06B20    EXG    A0,A4
  196. L06B22    BRA    L06986
  197. BAS_CLOSe:
  198.     CMPA.L    A3,A5
  199.     BLE.S    L06B44
  200.     TST.B    $01(A6,A3.L)
  201.     BPL.S    L06B44
  202.     JSR    CHNRTOID(PC)    ;*/undomodify BSR CHNRTOID
  203.     BNE.S    L06B42
  204.     MOVE.L    #$FFFFFFFF,0(A6,A2.L)
  205.     MOVEQ    #IO.CLOSE,D0
  206.     TRAP    #2
  207. L06B42    RTS
  208. L06B44    MOVEQ    #-15,D0        ; signal bad parameter error
  209.     BRA.S    L06B42
  210. BAS_OPEN:
  211.     MOVEQ    #0,D4
  212.     BRA.S    L06B52
  213. OPEN_IN:
  214.     MOVEQ    #1,D4
  215.     BRA.S    L06B52
  216. OPEN_NEW:
  217.     MOVEQ    #2,D4
  218. L06B52    BSR.S    BAS_CLOSe
  219.     TST.L    D0
  220.     BEQ.S    L06B5E
  221.     MOVEQ    #-6,D2
  222.     CMP.L    D0,D2
  223.     BNE.S    L06B42
  224. L06B5E    EXG    D1,D6
  225.     BSR    L069C4
  226.     EXG    D6,D1
  227.     BNE.S    L06B42
  228.     JMP    STO_CHID(PC)    ;*/undomodify BRA STO_CHID
  229.                 ; store channel ID
  230. BAS_SAVE:
  231.     MOVE.L    A3,$00B4(A6)    ; Temporary pointer for
  232.                 ; GO_PROC
  233.     MOVEQ    #$02,D4
  234.     BSR    L069C4
  235.     BNE.S    L06B42
  236.     JSR    L07484(PC)    ;*/undomodify BSR L07484
  237.     BEQ.S    L06B22
  238.     MOVE.L    D0,D4
  239.     BSR    L0699A
  240.     BRA    L0698C
  241. BAS_FILL:
  242.     JSR    CHNRTOID(PC)    ;*/undomodify BSR CHNRTOID
  243.     BNE.S    L06BA4
  244.     JSR    GET_INT4(PC)    ;*/undomodify BSR GET_INT4
  245.     BNE.S    L06BA4
  246.     MOVE.L    0(A6,A1.L),D1
  247.     ADDQ.L    #4,A1
  248.     MOVE.L    A1,BV_RIP(A6)    ;arithmetic stack
  249.     MOVEQ    #SD.FLOOD,D0    ;turns area flood on & off
  250.     MOVEQ    #-1,D3        ; timeout
  251.     TRAP    #3
  252. L06BA4    RTS
  253. BAS_UNDEr:
  254.     MOVE.B    #$2B,D4
  255.     BRA.S    L06BB0
  256. BAS_FLASh:
  257.     MOVE.B    #$2A,D4
  258. L06BB0    JSR    L08038(PC)    ;*/undomodify BSR L08038
  259.     BNE.S    L06BC0
  260.     JSR    L08028(PC)    ;*/undomodify BSR L08028
  261.     BNE.S    L06BC0
  262. L06BBC    JMP    L07FC4(PC)    ;*/undomodify BRA L07FC4
  263. L06BC0    RTS
  264. BAS_OVER:
  265.     JSR    L08038(PC)    ;*/undomodify BSR L08038
  266.     BNE.S    L06BC0
  267.     MOVE.B    #$2C,D4
  268.     MOVE.W    0(A6,A1.L),D1
  269.     CMPI.W    #$0001,D1
  270.     BGT.S    L06BDC
  271.     CMPI.W    #$FFFF,D1
  272.     BGE.S    L06BBC
  273. L06BDC    MOVEQ    #-15,D0        ; bad parameter
  274.     RTS
  275. L06BE0    BSR    L06CB6
  276.     JSR    CA_GTFP(PC)    ;*/undomodify BSR CA_GTFP
  277.     BNE.S    L06BF2
  278.     MOVEQ    #$36,D0        ; SD.GCUR sets the graphics
  279.                 ; cursor position
  280.     MOVEQ    #-1,D3
  281.     TRAP    #4
  282.     TRAP    #3
  283. L06BF2    BRA    L06CAE
  284. BAS_SCALe:
  285.     MOVEQ    #$34,D4
  286.     BSR    L06CB6
  287.     BSR    L06D42
  288.     BSR    L06D46
  289.     BRA    L06C96
  290. POINT:
  291.     MOVEQ    #$30,D4
  292.     BRA.S    L06C10
  293. POINT_R:
  294.     MOVE.W    #$00B0,D4
  295. L06C10    BSR    L06CB6
  296.     BSR    L06D1C
  297.     BRA.S    L06C96
  298. BAS_LINE:
  299.     MOVEQ    #$31,D4
  300.     BRA.S    L06C22
  301. LINE_R:
  302.     MOVE.W    #$00B1,D4
  303. L06C22    BSR    L06CB6
  304.     BSR    L06D0A
  305.     BNE.S    L06CA4
  306.     BSR    L06D1C
  307.     BRA.S    L06C96
  308. CIRCLE:
  309. ELLIPSE:
  310.     MOVEQ    #$33,D4
  311.     BRA.S    L06C3A
  312. CIRCLE_R:
  313. ELLIPSE_R:
  314.     MOVE.W    #$00B3,D4
  315. L06C3A    BSR.S    L06CB6
  316.     BSR    L06D1C
  317.     BSR    L06D46
  318.     CMPI.B    #$01,D5
  319.     BNE.S    L06C50
  320.     BSR    L06D42
  321.     BRA.S    L06C68
  322. L06C50    SUBQ.L    #8,A1
  323.     SUBQ.L    #4,A1
  324.     CLR.L    0(A6,A1.L)
  325.     MOVE.L    #$00000801,$04(A6,A1.L) ; floating point 0.5
  326.     MOVE.L    #$40000000,$08(A6,A1.L)
  327. L06C68    MOVEM.W    $06(A6,A1.L),D0-D2
  328.     MOVE.W    $0C(A6,A1.L),$06(A6,A1.L)
  329.     MOVE.L    $0E(A6,A1.L),$08(A6,A1.L)
  330.     MOVEM.W    D0-D2,$0C(A6,A1.L)
  331.     BRA.S    L06C96
  332. BAS_ARC:
  333.     MOVEQ    #$32,D4        ; SD.ARC plots an arc
  334.     BRA.S    L06C8A
  335. BAS_ARC_r:
  336.     MOVE.W    #$B2,D4        ; SD.ARC || 128
  337. L06C8A    BSR.S    L06CB6
  338.     BSR.S    L06D0A
  339.     BSR    L06D1C
  340.     BSR    L06D46
  341. L06C96    MOVE.L    D4,D0
  342.     SWAP    D0
  343.     BCLR    #7,D0
  344.     MOVEQ    #-1,D3
  345.     TRAP    #4
  346.     TRAP    #3
  347. L06CA4    CMPA.L    D6,A3
  348.     BGE.S    L06CAC
  349.     MOVE.L    A4,-(A7)
  350.     MOVE.W    D5,D4
  351. L06CAC    MOVEQ    #0,D0
  352. L06CAE    MOVE.L    D7,BV_RIP(A6)    ;arith stack
  353.     MOVEA.L    D7,A1
  354.     RTS
  355. L06CB6    ; execution of graphic commands
  356.     SWAP    D4
  357.     CLR.W    D4
  358.     CLR.W    D5
  359.     MOVE.L    BV_RIP(A6),D7    ;arith stack
  360.     MOVE.L    A5,D6
  361.     CMPA.L    D6,A3
  362.     BLT.S    L06CCA
  363.     MOVEQ    #-$0F,D0
  364.     BRA.S    L06D06
  365. L06CCA    MOVE.B    1(A6,A3.L),D0
  366.     ANDI.B    #$0F,D0
  367.     BNE.S    L06CDC
  368.     JSR    L07452(PC)    ;*/undomodify BSR L07452
  369.     MOVE.W    D5,D4
  370.     BRA.S    L06CEE
  371. L06CDC    BTST    #$07,$01(A6,A3.L)
  372.     BEQ.S    L06CEE
  373.     MOVE.B    $01(A6,A3.L),D4
  374.     BCLR    #$07,D4
  375.     LSR.B    #4,D4
  376. L06CEE    JSR    CHNRTOID(PC)    ;*/undomodify BSR CHNRTOID
  377.     BNE.S    L06D06
  378.     MOVE.W    #$0100,D1
  379.     JSR    BV_CHRIX(PC)    ;*/undomodify BSR BV_CHRIX
  380.     MOVE.L    BV_RIP(A6),D7    ;arith stack
  381.     MOVEA.L    D7,A1
  382.     MOVEA.L    (A7),A4
  383.     RTS
  384. L06D06    ADDQ.L    #4,A7
  385.     BRA.S    L06CAE
  386. L06D0A    CMPI.B    #$05,D4
  387.     BNE.S    L06D1C
  388.     BSR.S    L06D6E
  389.     BSR.S    L06D7E
  390.     MOVE.L    A1,BV_RIP(A6)    ;arith stack
  391.     MOVEQ    #0,D0
  392.     RTS
  393. L06D1C    BSR.S    L06D4C
  394.     BNE.S    L06D06
  395.     BTST    #$17,D4
  396.     BEQ.S    L06D2C
  397.     BSR.S    L06D6E
  398.     JSR    RI_ADD(PC)    ;*/undomodify BSR RI_ADD
  399. L06D2C    BSR.S    L06D4C
  400.     BNE.S    L06D06
  401.     BTST    #$17,D4
  402.     BEQ.S    L06D3C
  403.     BSR.S    L06D7E
  404.     JSR    RI_ADD(PC)    ;*/undomodify BSR RI_ADD
  405. L06D3C    BSR.S    L06D8E
  406.     MOVEQ    #1,D0
  407.     RTS
  408. L06D42    BSR.S    L06D4C
  409.     BNE.S    L06D06
  410. L06D46    BSR.S    L06D4C
  411.     BNE.S    L06D06
  412.     RTS
  413. L06D4C    MOVE.L    A4,-(A7)
  414.     CMPA.L    D6,A3
  415.     BLT.S    L06D56
  416.     MOVEQ    #-15,D0        ; Bad parameter
  417.     BRA.S    L06D6A
  418. L06D56    MOVE.W    D5,D4
  419.     JSR    L07452(PC)    ;*/undomodify BSR L07452
  420.     MOVEA.L    A3,A5
  421.     JSR    L05EC8(PC)    ;*/undomodify BSR L05EC8
  422.     BNE.S    L06D6A
  423.     MOVEQ    #$02,D0
  424.     JSR    L05996(PC)    ;*/undomodify BSR L05996
  425. L06D6A    MOVEA.L    (A7)+,A4
  426.     RTS
  427. L06D6E    SUBQ.W    #6,A1
  428.     MOVE.L    $0A(A6,A2.L),0(A6,A1.L)
  429.     MOVE.W    $0E(A6,A2.L),$04(A6,A1.L)
  430.     RTS
  431. L06D7E    SUBQ.W    #6,A1
  432.     MOVE.L    $04(A6,A2.L),0(A6,A1.L)
  433.     MOVE.W    $08(A6,A2.L),$04(A6,A1.L)
  434.     RTS
  435. L06D8E    MOVE.L    0(A6,A1.L),$04(A6,A2.L)
  436.     MOVE.L    $04(A6,A1.L),$08(A6,A2.L)
  437.     MOVE.L    $08(A6,A1.L),$0C(A6,A2.L)
  438.     RTS
  439. ; --------------------------------------------------------------
  440. ;*/endfile
  441.